package com.meituan.sqt.model.order.orig;

import lombok.Data;

import java.util.List;

/**
 * @author: chenbocheng02@meituan.com
 * @date: 2022/2/10 8:10 下午
 * @description:
 */
@Data
public class CarOrderInfo {
    /**
     * 订单基本信息
     */
    private CarOrderBaseInfo carOrderBase;
    /**
     * 乘车人列表信息
     */
    private List<CarPassengerInfo> passengers;
    /**
     * 费用账单信息
     */
    private CarOrderBillInfo orderBill;

    @Data
    public static class CarOrderBaseInfo {
        /**
         * 打车订单状态
         */
        private Integer orderStatus;
        /**
         * 支付状态 0初始 1待付款 2付款中 3付款成功 4付款失败 5申请退款 6确认退款 7拒绝退款 8退款成功 9退款失败 12代扣中 13代扣成功 14代扣失败
         */
        private Integer payStatus;
        /**
         * 用车场景 1 加班用车,4 差旅用车,7 日常公出
         */
        private Integer useType;
        /**
         * 用车场景名称
         */
        private String useTypeName;
        /**
         * 差旅用车子场景 5 前往机站,6 离开机站,7 出差城市用车
         */
        private Integer tripSceneType;
        /**
         * 差旅用车子场景名称
         */
        private String tripSceneTypeName;
        /**
         * 接单运力描述
         */
        private String carTypeDesc;
        /**
         * 接单车型
         */
        private String partnerCarTypeName;
        /**
         * 用车城市
         */
        private String orgCityName;
        /**
         * 目的城市
         */
        private String arrCityName;
        /**
         * 预约单类型 1 实时单 2 预约单
         */
        private Integer reserveType;
        /**
         * 13位时间戳，预约用车时间
         */
        private Long reserveTime;
        /**
         * 用户选择出发地地址
         */
        private String startAddress;
        /**
         * 用户选择出发地经度
         */
        private String startLongitude;
        /**
         * 用户选择出发地纬度
         */
        private String startLatitude;
        /**
         * 用户选择目的地地址
         */
        private String endAddress;
        /**
         * 用户选择目的地经度
         */
        private String endLongitude;
        /**
         * 用户选择目的地纬度
         */
        private String endLatitude;
        /**
         * 开始行程地址
         */
        private String deliveryStartAddress;
        /**
         * 开始行程经度
         */
        private String deliveryStartLongitude;
        /**
         * 开始行程纬度
         */
        private String deliveryStartLatitude;
        /**
         * 结束行程地址
         */
        private String deliveryEndAddress;
        /**
         * 结束行程经度
         */
        private String deliveryEndLongitude;
        /**
         * 结束行程纬度
         */
        private String deliveryEndLatitude;
        /**
         * 接单司机
         */
        private String driverName;
        /**
         * 司机车牌号
         */
        private String driverCarNumber;
        /**
         * 汽车型号
         */
        private String driverCarModel;
        /**
         * 车身颜色
         */
        private String driverCarColor;
        /**
         * 取消原因
         */
        private String cancelReason;
        /**
         * 取消方(1-乘客,2-司机,3-平台)
         */
        private Integer cancelLiabCode;
        /**
         * 13位时间戳，用车订单创建时间
         */
        private Long orderCreatedTime;
        /**
         * 13位时间戳，司机接单时间时间
         */
        private Long orderConfirmedTime;
        /**
         * 13位时间戳，行程开始时间
         */
        private Long tripStartedTime;
        /**
         * 13位时间戳，行程结束时间
         */
        private Long tripDeliveredTime;
        /**
         * 13位时间戳，更新时间
         */
        private Long latestUpdateTime;
        /**
         * 支付方式
         */
        private String payType;
        /**
         * 用车原因
         */
        private String useReason;
        /**
         * 用车规则包ID
         */
        private String rulePackId;
        /**
         * 用车规则名称
         */
        private String ruleName;
        /**
         * 升舱服务
         */
        private String upgradeType;
    }

    @Data
    public static class CarPassengerInfo {
        /**
         * 乘车人姓名
         */
        private String passengerName;
        /**
         * 用户直接填写乘车人姓名后带出乘车人内部工号ID，若为外部用户则ID为空
         */
        private String passengerId;
        /**
         * 内部或外部用户，1表示内部，2表示外部
         */
        private Integer passengerType;

    }

    @Data
    public static class CarOrderBillInfo {
        /**
         * 取消费用
         */
        private CancelPriceInfo cancelPrice;
        /**
         * 用户费用
         */
        private UserPriceInfo userPrice;
        /**
         * 行程前费用
         */
        private BeforeTripPriceInfo beforeTripPrice;
        /**
         * 行程后费用
         */
        private AfterTripPriceInfo afterTripPrice;
    }

    @Data
    public static class CancelPriceInfo {
        /**
         * 用户取消时需要支付的费用总和
         */
        private Integer cancelPay;
        /**
         * 用户费用
         */
        private Integer cancelFee;
    }

    @Data
    public static class UserPriceInfo {
        /**
         * 行驶里程,单位米
         */
        private Integer driveDistance;
        /**
         * 行驶里程费,单位分
         */
        private Integer driveDistancePrice;
        /**
         * 远途里程,单位米
         */
        private Integer driveLongDistance;
        /**
         * 远途里程费,单位分
         */
        private Integer driveLongDistancePrice;
        /**
         * 最低消费,单位分
         */
        private Integer driveMinPrice;
        /**
         * 夜间里程,单位米
         */
        private Integer driveNight;
        /**
         * 夜间费,单位分
         */
        private Integer driveNightPrice;
        /**
         * 	起步价,单位分
         */
        private Integer driveStartPrice;
        /**
         * 行驶时长,单位毫秒
         */
        private Long driveTime;
        /**
         * 行驶时长费,单位分
         */
        private Integer driveTimePrice;
        /**
         * 溢价封顶费用,单位分
         */
        private Integer dynamicMaxPrice;
        /**
         * 动态调价费,单位分
         */
        private Integer dynamicPrice;
        /**
         * 一口价订单，预支付阶段需要用户支付的原始一口价（未减免红包金额）
         */
        private Integer fixedPrice;
        /**
         * 计价倍数
         */
        private Integer multiple;
        /**
         * 正常里程,单位米
         */
        private Integer normalDistance;
        /**
         * 正常里程费,单位分
         */
        private Integer normalDistancePrice;
        /**
         * 正常时长
         */
        private Long normalTime;
        /**
         * 正常时长费,单位分
         */
        private Integer normalTimePrice;
        /**
         * 起步价最大里程,单位米
         */
        private Integer startPriceDistance;
        /**
         * 起步价最大时长
         */
        private Long startPriceTime;
        /**
         * 订单总金额,单位分
         */
        private Integer totalPrice;
        /**
         * 春节服务费,单位分
         */
        private Integer servicePriceAmount;
        /**
         * 出租车打表金额,单位分
         */
        private Integer taxiMeterFee;
        /**
         * 三方运力优惠金额,单位分
         */
        private Integer discountPrice;
        /**
         * 基础费用补足金额,单位分
         */
        private Integer priceDifference;
    }

    @Data
    public static class BeforeTripPriceInfo {
        /**
         * 平台调度费,单位分
         */
        private Integer platformDispatchPrice;
        /**
         * 调度费,单位分
         */
        private Integer dispatchPrice;
        /**
         * 远途调度费,单位分
         */
        private Integer longDispatchPrice;
        /**
         * 等待费,单位分
         */
        private Integer waitFee;
        /**
         * 等待时长
         */
        private Long waitTime;
        /**
         * 感谢费,单位分
         */
        private Integer thanksFee;
    }

    @Data
    public static class AfterTripPriceInfo {
        /**
         * 通行费,单位分
         */
        private Integer driveTollPrice;
        /**
         * 停车费,单位分
         */
        private Integer driveParkPrice;
        /**
         * 其他费用,单位分
         */
        private Integer driveOtherPrice;
        /**
         * 高速费,单位分
         */
        private Integer driveHighwayPrice;
        /**
         * 电调费,单位分
         */
        private Integer eDispatchFee;
    }
}
